package main

import "fmt"

//switch的功能可以用if来实现，但是switch的可读性、性能更好

func main() {
	/*  所有的执行逻辑只会执行一条，从上到下
	switch var1(表达式){
	case vlue1(条件):
		执行逻辑
	case vlue2(条件):
		执行逻辑
	case vlue2(条件):
		执行逻辑
	default:
		执行逻辑 // 上面条件都不满足才走这个执行逻辑
	}
	*/
	// 例子： 中文的星期几，输出对应的英文(判断单个变量 )
	day := "星期三"
	switch day {
	case "星期一":
		fmt.Println("Monday")
	case "星期二":
		fmt.Println(":Tuesday")
	case "星期三":
		fmt.Println("Wednesday")
	case "星期四":
		fmt.Println("Thursday")
	default:
		fmt.Println("UnKown")
	}

	// 例子： 多个不同变量，除了多个变量还是可以像这样写判断在循环体里
	age1 := 18
	adr := "深圳"
	switch {
	case age1 < 19:
		fmt.Println("年轻")
	case adr == "深圳":
		fmt.Println("大城市")
	default:
		fmt.Println("hello")
	}

	// 分数评比
	score := 66
	switch {
	case score < 60:
		fmt.Println("等级是E")
	case score >= 60 && score < 70:
		fmt.Println("等级是D")
	case score >= 70 && score < 80:
		fmt.Println("等级是C")
	case score >= 80 && score < 90:
		fmt.Println("等级是B")
	case score >= 90 && score < 100:
		fmt.Println("等级是A")
	default:
		fmt.Println("UnKown")
	}

	// 当值在一个判断里有多个值，简化写法
	score2 := 66
	switch score2 {
	case 66, 70, 80: //在这里就指定了其中几个值，满足其中一个就可以
		fmt.Println("及格了")
	default:
		fmt.Println("UnKown")
	}
}
